﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Collections;
using DAO.AcessoSQLDB;
using System.IO;
using System.Data;
using DAO.AcessoPG;
using PlusArquivosDigitais.Entidades;

namespace PlusArquivosDigitais.DAO
{
    public class DAOInsereImagem
    {
        public DAOInsereImagem() { }

        #region Construtor

        private static int _idBancoConn;
        private static string _StringConn;

        public int IdBancoConn
        {
            get { return _idBancoConn; }
            set { _idBancoConn = value; }
        }
        public string StringConn
        {
            get { return _StringConn; }
            set { _StringConn = value; }
        }

        private static void ExecutaChamadaDAO(ConfigConexao obj)
        {
            try
            {                
                _idBancoConn = obj.IdBanco;
                _StringConn = obj.StrConn;                
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }

        #endregion

        public static void InserirImagem(int id,string path, byte[] img)
        {
            try
            {
                Hashtable prm = new Hashtable();
                prm["@id"] = id;
                prm["@caminho"] = path;
                prm["@imagem"] = img;

                switch (_idBancoConn)
                {
                    case 1:
                        PGDataAccess dbPG = new PGDataAccess(_StringConn);
                        dbPG.ExecutaAtualizacao("QryInserirImagem", prm);
                        break;
                    case 2:
                        MSSQLDataAccess dbSQL = new MSSQLDataAccess(_StringConn);
                        dbSQL.ExecutaAtualizacao("", prm);
                        break;
                    default:
                        break;
                }

            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
            return;
        }

        public static Bitmap ObterImagemDoBanco(int id)
        {
            try
            {

                Hashtable prm = new Hashtable();
                prm["@id"] = id;

                byte[] imagemBytes = null;

                PGDataAccess db = new PGDataAccess();
                //MSSQLDataAccess db = new MSSQLDataAccess();
                DataTable dt = db.ExecutaConsulta("QrySelecionarImagem", prm);

                foreach (DataRow dr in dt.Rows)
                {
                    imagemBytes = (byte[])dr["imagem"];
                }
                MemoryStream ms = new MemoryStream(imagemBytes);
                Bitmap bmap = new Bitmap(ms);
                return bmap;

            }
            catch (Exception)
            {
                throw new Exception("Imagem não encontrada!");
            }
        }


    }
}
